package com.cskaoyan.com.collection.arraydeque;

import java.util.ArrayDeque;

public class DemoArrayDeque1 {
    public static void main(String[] args) {



// 1, ArrayDeque是Deque接口的子实现
// 2, ArrayDeque:  队列, 双端队列, 栈
// 3, 底层是一个循环数组
// 4, 数组的默认初始长度16, 扩容机制2倍
// 5, 存储数据有序
// 6, 允许存储重复数据
// 7, 不允许存储null
// 8, 线程不安全



        ArrayDeque<String> deque = new ArrayDeque<>(10);
        deque.offerLast("zs");


//        elements[tail] = e;
        // tail = (tail + 1) & (elements.length - 1)
        // 先等价看做
        // tail = (tail + 1) % elements.length
        // end = (end + 1) % objs.length
//        if ( (tail = (tail + 1) & (elements.length - 1)) == head)
//            doubleCapacity();


        int num = 10;

//        一个数 和 2的幂值, 取余数
//        等价于: 等价于取这个数的低位
        // 10 % 4 = 2
        //  10 ->  1010
        //  4  ->  0100
//       10 & (4-1)
//      // 4-1  ->0011
//      // 10   ->1010
//          &     0010



    }
}
